package com.maixun.lib_base.mvp

import com.maixun.lib_network.entity.NetBaseEntity
import com.maixun.lib_base.entity.UpFileResultBeen
import com.maixun.lib_choosefile.entity.FileItem
import io.reactivex.Observable
import io.reactivex.Observer
import io.reactivex.disposables.Disposable

/**
 * 作者：Lmoumou
 * 时间：2020/7/13 16:23
 */
interface BaseContract {
    interface BaseModel {
        /**
         * 文件上传
         *
         * @param fileList 文件集合
         * @param areaTag 文件上传的区域
         *
         * @return 上传结果
         * */
        fun mUpLoadFile(
            fileList: MutableList<FileItem>,
            areaTag: Int
        ): Observable<MutableList<UpFileResultBeen>>?

        /**
         * 网络请求
         *
         * @param observer
         * @param observable
         * */
        fun <T> mNetWork(
            observer: Observer<NetBaseEntity<T>>,
            observable: Observable<NetBaseEntity<T>>
        )
    }

    interface BasePresenter {
        fun addDisposable(d: Disposable)

        /*解绑view*/
        fun detachView()

    }

    interface BaseView {

        /**
         * 展示Loading
         * */
        fun showLoading()

        /**
         * Loading消失
         * */
        fun dismissLoading()

        /**
         * 数据处理异常
         * */
        fun onDataAnalyzeEx(e: Throwable)

        /**
         * 连接异常
         * */
        fun onNetEx(e: Throwable)

        /**
         * 处理与后台约定的Code
         * */
        fun onServerCode(msg: String?, serverCode: String)

        /**
         * 冒泡提示
         * */
        fun onToast(msg: String?)
    }
}